package com.lihepeng.leecode.array2;

import org.junit.Test;

/**
 * 给定一个 m x n 的矩阵，如果一个元素为 0，则将其所在行和列的所有元素都设为 0。请使用原地算法。
 */
public class Solution73 {
    // 使用标记数组的方式进行替换
    public void setZeroes(int[][] matrix) {
        // 使用两个标记数组 来标记 某一行或者某一列是不是有0 出现
        int m = matrix.length;
        int n = matrix[0].length;
        boolean[] row = new boolean [m];
        boolean[] col = new boolean [n];
        // 遍历数组  标记某一行或者某一列是不是为空
        for(int i=0;i<m;i++){
            for (int j=0;j<n;j++){
                if (matrix[i][j]==0){
                    row[i]=col[j]=true;
                }
            }
        }
        // 根据标记的数组重新进行赋值操作
        for (int i=0;i<m;i++){
            for (int j=0;j<n;j++){
                if (row[i]||col[j]){
                    matrix [i][j]=0;
                }
            }
        }
    }
    // 使用两个表示位的方式完成
    public void setZeroes02(int[][] matrix) {
    }

    @Test
    public void runTest(){
        System.out.println("1");
        int [][]matrix = {{1,2,3},{4,5,6},{7,8,9}};
        setZeroes(matrix);
    }

}
